<template>
  <div v-if="detailInfo.nm">
    <div>这是详情页面</div>
    <div>{{ detailInfo.nm }}</div>
    <img :src="detailInfo.img | ft" alt="" />
    <button @click="guess">猜你喜欢</button>
  </div>
</template>

<script>
import { mapActions, mapState, mapMutations } from "vuex";
export default {
  // computed: mapState(["detailInfo"]),
  computed: mapState({
    detailInfo: (state) => state.detail.detailInfo,
  }),
  methods: {
    ...mapActions("detail", ["getDetailDataAsync"]),
    ...mapMutations("detail", ["clearDetailData"]),
    guess() {
      this.$router.push("/detail/247294");
    },
  },
  created() {
    this.clearDetailData();
    this.getDetailDataAsync({ id: this.$route.params.id });
  },
  filters: {
    ft(val) {
      return val.split("/w.h").join("/200.300");
    },
  },
  // async beforeRouteEnter(to, from, next) {
  //   // console.log("beforeRouteEnter", this);
  //   // 在渲染该组件的对应路由被 confirm 前调用
  //   // 不！能！获取组件实例 `this`
  //   // 因为当守卫执行前，组件实例还没被创建

  //   // 先获取数据，再next跳转
  //   const res = await detailApi({ id: to.params.id });
  //   next((vm) => {
  //     vm.detailInfo = res.result;
  //   });
  // },
  // async beforeRouteUpdate(to, from, next) {
  //   // console.log(123);
  //   // 在当前路由改变，但是该组件被复用时调用
  //   // 举例来说，对于一个带有动态参数的路径 /foo/:id，在 /foo/1 和 /foo/2 之间跳转的时候，
  //   // 由于会渲染同样的 Foo 组件，因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
  //   // 可以访问组件实例 `this`
  //   const res = await detailApi({ id: to.params.id });
  //   this.detailInfo = res.result;
  //   next();
  // },
  // beforeRouteLeave(to, from, next) {
  //   // 导航离开该组件的对应路由时调用
  //   // 可以访问组件实例 `this`
  //   // next();
  //   const answer = window.confirm(
  //     "Do you really want to leave? you have unsaved changes!"
  //   );
  //   if (answer) {
  //     next();
  //   } else {
  //     next(false);
  //   }
  // },
};
</script>
